#include <bits/stdc++.h>
using namespace std;
long long four[100003]; // 记录字符 '4' 的前缀和
long long star[100003]; // 记录字符 '*' 的前缀和
long long zero[100003]; // 记录字符 '0' 的前缀和
using LL = long long;
const int MOD = 1e9 + 7; // 模数

int dp[100003]; // 动态规划数组

LL jisuan(int n) {
  vector<vector<int>> dp(n + 1, vector<int>(n + 1)); // 创建二维动态规划数组
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= i && j <= n; j++)
      if (i == j || j == 0)
        dp[i][j] = 1; // 边界条件
      else
        dp[i][j] = (dp[i - 1][j] + dp[i - 1][j - 1]) % MOD; // 动态规划转移

  LL ans = 0;
  for (int i = 0; i <= n; i++) {
    (ans += (i * dp[n][i]) % MOD) %= MOD; // 计算最终结果
  }
  return ans;
}

LL my_pow(LL a, LL b) {
  LL ans = 1LL;
  while (b) {
    if (b & 1)
      ans = ans * a % MOD; // 计算 a 的 b 次方
    a = a * a % MOD;       // 平方
    b >>= 1;               // 右移一位
  }
  return ans;
}

LL jisuan2(LL n) {
  if (n == 0)
    return 0LL; // 如果 n 为 0，返回 0
  else
    return n * my_pow(2, n - 1) % MOD; // 计算 n * 2^(n-1)
}

LL work() {
  memset(four, 0, sizeof(four)); // 初始化 four 数组
  memset(star, 0, sizeof(star)); // 初始化 star 数组
  memset(zero, 0, sizeof(zero)); // 初始化 zero 数组

  int n;
  cin >> n; // 输入字符串长度
  string s;
  cin >> s;    // 输入字符串
  s = " " + s; // 在字符串前加一个空格，方便处理
  for (int i = 1; i <= n; i++) {
    four[i] = four[i - 1] + (s[i] == '4'); // 计算 '4' 的前缀和
    star[i] = star[i - 1] + (s[i] == '*'); // 计算 '*' 的前缀和
    zero[i] = zero[i - 1] + (s[i] == '0'); // 计算 '0' 的前缀和
  }

  LL ans = 0;
  for (int i = 1; i <= n; i++) {
    if (s[i] == '*' || s[i] == '0') {    // 如果当前字符是 '*' 或 '0'
      LL left_four = four[i - 1];        // 左侧 '4' 的数量
      LL left_star = star[i - 1];        // 左侧 '*' 的数量
      LL right_four = four[n] - four[i]; // 右侧 '4' 的数量
      LL right_star = star[n] - star[i]; // 右侧 '*' 的数量

      LL left = (left_four * my_pow(2, left_star) % MOD + jisuan2(left_star)) %
                MOD; // 计算左侧结果
      LL right =
          (right_four * my_pow(2, right_star) % MOD + jisuan2(right_star)) %
          MOD;                              // 计算右侧结果
      (ans += (left * right) % MOD) %= MOD; // 更新最终结果
    }
  }
  return ans; // 返回结果
}

int main() {
  int t;
  cin >> t; // 输入测试用例数量
  while (t--) {
    cout << work() << endl; // 输出每个测试用例的结果
  }
  return 0;
}